

import java.io.*;

/**
* 文件切割程序  - Java I/O
* 使用方法 ：
* - javac -encoding utf8 SplitFile.java
* - java SplitFile One.mp3 1024 splitsdir
* - java SplitFile c:\\One.mp3 1024 e:\\jadedir\\splitsdir
* @author Jade ZHANG || pioneer_zcy@163.com
* @version 1.1 UpdateTime: 2016年1月17日23:45:29
*/
public class SplitFile{
	/**
	* 程序执行入口
	* 传入3个参数：
	* 1、被分割文件的路径
	* 2、每个碎片的大小*KB
	* 3、碎片要放入的文件夹 
	*/
	public static void main(String[] args) throws IOException{
		String fileName = args[0]; //被分割文件的路径
		int sizeOfPart = Integer.parseInt(args[1]); //每个碎片的大小*KB
		String dirName = args[2]; //碎片要放入的文件夹 
		splitFile(fileName, sizeOfPart, dirName); //调用分割函数
	}
	/**
	* 切割函数。没有进行异常处理
	* @param fileName - 被分割文件的路径
	* @param sizeOfPart - 每个碎片的大小*KB
	* @param dirName - 碎片要放入的文件夹 
	* @return void
	*/
	public static void splitFile(String fileName, int sizeOfPart, String dirName) throws IOException{
		FileInputStream fis = new FileInputStream(fileName);
		
		FileOutputStream fos = null;

		byte[] buf = new byte[sizeOfPart*1024];

		int len = 0;
		int count = 1;
		File directoryName = new File(dirName);
		directoryName.mkdirs(); //抛出SecurityException，是Runtime异常，不用throws
		while((len=fis.read(buf))!=-1){
			fos = new FileOutputStream(dirName+File.separator+(count++)+".part");
			fos.write(buf, 0, len);
			fos.close();
		}

		fis.close();
	}
}

